Cours Git – 24 Septembre 2025
Introduction
Git : moteur de gestion de versions (versioning).
GitHub : plateforme qui exploite Git, avec fonctionnalités collaboratives, issues, pull requests, CI/CD, etc.
Objectifs principaux :
- Sauvegarder chaque étape d’un projet
- Travailler à plusieurs
- Revenir en arrière si besoin
Git est décentralisé.
Concepts clés
- Repository : équivalent d’un projet (dépôt)
- Commit : un point de sauvegarde. Créer de petits commits atomiques avec un message clair
- Tag : marque un commit pour lui donner une version. Il existe des tags annotés et légers
- Branche : créer une autre version du projet pour une nouvelle fonctionnalité
- Merge : intégrer les commits d’une branche dans la branche principale. Attention au fast-forward merge
- Rebase : réécrit l’historique d’une branche. Utile pour nettoyer l’historique avant un merge, mais risqué si la branche a été partagée
- CI/CD : Continuous Integration / Continuous Deployment :
- Intégration continue : chaque commit déclenche automatiquement des tests pour détecter rapidement les erreurs
- Déploiement continu : automatisation du déploiement de nouvelles versions, souvent sur des environnements de test ou production
- Permet de réduire les bugs, standardiser les déploiements et accélérer la livraison
Commits et conventions
Un commit doit représenter une seule idée et ne pas être un "fourre-tout".
Bonnes pratiques :
- Petit nombre de fichiers modifiés par commit
- Commits fréquents pour un historique lisible
- Exemple de format de message :
<type>(<scope>): <message>
feat
= nouvelle fonctionnalité, fix
= correction, docs
= documentation, chore
= tâche techniqueBranches et merge
Branches permettent de développer de nouvelles fonctionnalités sans impacter la branche principale.
Merge réinjecte les commits d’une branche dans la principale. Selon le contexte, le merge peut créer un nouveau commit ou faire un fast-forward.
Rebase : modifie la base d’une branche pour éviter conflits et nettoyer l’historique. Ne jamais rebaser des commits déjà partagés avec d’autres.
Workflows Git
- Gitflow : workflow structuré avec branches dédiées pour dev, release, hotfix
- GitHub Flow : simple, branche principale + feature branches
- Trunk-based : intégration fréquente sur la branche principale, petites itérations
.gitignore
Fichier qui contient les fichiers que Git doit ignorer lors du push : infos sensibles, fichiers caches…
On peut générer facilement un fichier via gitignore.io
Rappel : un commit atomique = une seule idée ; un commit volumineux = difficile à relire et maintenir.